home *** CD-ROM | disk | FTP | other *** search
/ Speccy ClassiX 1998 / Speccy ClassiX 98.iso / amiga_system / the_aminet / dev / gcc / ixemulsrc.lha / ixemul-41.4 / library / dsyscall.c < prev    next >
C/C++ Source or Header  |  1995-05-17  |  2KB  |  78 lines

  1. /*
  2.  *  This file is part of ixemul.library for the Amiga.
  3.  *  Copyright (C) 1991, 1992  Markus M. Wild
  4.  *
  5.  *  This library is free software; you can redistribute it and/or
  6.  *  modify it under the terms of the GNU Library General Public
  7.  *  License as published by the Free Software Foundation; either
  8.  *  version 2 of the License, or (at your option) any later version.
  9.  *
  10.  *  This library is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13.  *  Library General Public License for more details.
  14.  *
  15.  *  You should have received a copy of the GNU Library General Public
  16.  *  License along with this library; if not, write to the Free
  17.  *  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  *
  19.  *  dsyscall.c,v 1.1.1.1 1994/04/04 04:29:37 amiga Exp
  20.  *
  21.  *  dsyscall.c,v
  22.  * Revision 1.1.1.1  1994/04/04  04:29:37  amiga
  23.  * Initial CVS check in.
  24.  *
  25.  *  Revision 1.1  1992/05/14  19:55:40  mwild
  26.  *  Initial revision
  27.  *
  28.  */
  29.  
  30. #define syscall _syscall
  31. #define KERNEL
  32. #include "ixemul.h"
  33. #undef syscall
  34.  
  35. #define SYSTEM_CALL(func, vec) #func,
  36.  
  37. char *sys_call[] = { "bogous",
  38. #include <sys/syscall.def>
  39. };
  40. #undef SYSTEM_CALL
  41.  
  42. #include <sys/syscall.h>
  43.  
  44. typedef int (*intfunc)();
  45.  
  46. static int go = 0;
  47.  
  48. void
  49. reset_watchdog ()
  50. {
  51.   go = 0;
  52. }
  53.  
  54. int
  55. syscall (int a0, int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8)
  56. {
  57.   int result;
  58.  
  59. if (! ix.ix_translate_dots) go = 1;
  60.  
  61. #if 0
  62. if (a0 != SYS_sigsetmask)
  63. #endif
  64. if (go)
  65.   KPrintF ("%s ($%lx, $%lx, $%lx, $%lx)\n", sys_call[a0], a1, a2, a3, a4);
  66.  
  67.   result = ((intfunc)((int)ixemulbase-(a0+4)*6))(a1, a2, a3, a4, a5, a6, a7, a8);
  68.  
  69. if (! ix.ix_translate_dots) go = 1;
  70.  
  71. #if 0
  72. if (a0 != SYS_sigsetmask)
  73. #endif
  74. if (go)
  75.   KPrintF ("\t\t%s() returned $%lx.\n", sys_call[a0], result);
  76.   return result;
  77. }
  78.